package com.cs.memento;

import java.util.Iterator;
import java.util.Random;
import java.util.Vector;

/**
 * @author Sam.Lee E-mail:lishanman2007@163.com
 * @version Created：Aug 25, 2011 3:27:21 PM
 */
public class Gamer {
	private int money; // 所持金
	private Vector fruits = new Vector(); // 水果
	private Random random = new Random(); // 随机数产生器
	private static String[] fruitsname = { // 水果名
	"苹果", "葡萄", "香蕉", "橘子", };

	public Gamer(int money) { // 构造函数
		this.money = money;
	}

	public int getMoney() { // 得到现在的所持金
		return money;
	}

	public void bet() { // 游戏进行
		int dice = random.nextInt(6) + 1; // 丢骰子
		if (dice == 1) { // 1点
			money += 100;
			System.out.println("所持金增加了");
		} else if (dice == 2) { // 2点
			money /= 2;
			System.out.println("所持金减半");
		} else if (dice == 6) { // 6点
			String f = getFruit();
			System.out.println("水果(" + f + ")得到了");
			fruits.add(f);
		} else { // 其他
			System.out.println("什么都没做");
		}
	}

	public Memento createMemento() { // 存储
		Memento m = new Memento(money);
		Iterator it = fruits.iterator();
		while (it.hasNext()) {
			String f = (String) it.next();
			if (f.startsWith("好吃的")) { // 保存好吃的水果
				m.addFruit(f);
			}
		}
		return m;
	}

	public void restoreMemento(Memento memento) { // 读取
		this.money = memento.money;
		this.fruits = memento.fruits;
	}

	public String toString() { // 文字列表现
		return "[money = " + money + ", fruits = " + fruits + "]";
	}

	private String getFruit() { // 得到一个水果
		String prefix = "";
		if (random.nextBoolean()) {
			prefix = "好吃的";
		}
		return prefix + fruitsname[random.nextInt(fruitsname.length)];
	}

}
